package br.com.alinesoftware.app.entity;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.annotations.ForeignKey;

import com.powerlogic.jcompany.domain.validation.PlcUnifiedValidation;


@MappedSuperclass
@PlcUnifiedValidation
public abstract class Endereco implements Serializable {

	private static final long serialVersionUID = 6002175199394329701L;
	
	@Id 
 	@GeneratedValue(strategy=GenerationType.AUTO, generator = "SE_ENDERECO")
	@Column(nullable=false,length=5)
	private Long id;
	
	@NotNull
	@Column(length=8)
	private Integer cep;
	
	@NotNull
	@Size(max = 255)
	@Column
	private String nomeLogradouro;
	
	@NotNull
	@Size(max = 255)
	@Column
	private String nomeBairro;
	
	@NotNull
	@Column(length=8)
	private Integer numero;
	
	@NotNull
	@Size(max = 255)
	@Column
	private String complNumero;
	
	
	@ManyToOne(targetEntity = CidadeEntity.class, fetch = FetchType.LAZY)
	@ForeignKey(name = "FK_ENDERECO_CIDADE")
	@NotNull
	@JoinColumn
	private Cidade cidade;
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id=id;
	}

	public Integer getCep() {
		return cep;
	}

	public void setCep(Integer cep) {
		this.cep=cep;
	}
	
	public String getNomeLogradouro() {
		return nomeLogradouro;
	}

	public void setNomeLogradouro(String nomeLogradouro) {
		this.nomeLogradouro=nomeLogradouro;
	}

	public Integer getNumero() {
		return numero;
	}

	public void setNumero(Integer numero) {
		this.numero=numero;
	}

	public String getComplNumero() {
		return complNumero;
	}

	public void setComplNumero(String complNumero) {
		this.complNumero=complNumero;
	}

	public Cidade getCidade() {
		return cidade;
	}

	public void setCidade(Cidade cidade) {
		this.cidade = cidade;
	}

	public String getNomeBairro() {
		return nomeBairro;
	}

	public void setNomeBairro(String nomeBairro) {
		this.nomeBairro = nomeBairro;
	}
}
